Method and apparatus for enhancing instant messaging systems

ABSTRACT

The present invention provides a method, apparatus, and computer instructions for organizing threads in an instant messaging session. Instant messages are received from a list of contacts. Each of these messages are stored in a set of folders, wherein each folders in the set of folders stores messages for a contact in the number of contacts. Each file is linked for access though a graphical user interface. Message threads are handled by displaying a primary dialog window, wherein the primary dialog window includes an ongoing conversation pane and an outgoing message pane. Responsive to a user input identifying a new thread, a secondary dialog window is displayed, wherein the secondary dialog window includes an ongoing conversation pane and an outgoing message pane. Responses to outgoing messages sent from the outgoing message pane are displayed in the primary dialog window in the ongoing conversation pane in the primary dialog window. Responses to outgoing messages sent from the outgoing message pane in the secondary dialog window are displayed in the ongoing conversation pane in the secondary dialog window, wherein the primary dialog window and the secondary dialog window.

BACKGROUND OF THE INVENTION

1. Technical Field

The present invention relates generally to an improved data processingsystem and in particular, to a method, apparatus, and computerinstructions for processing and displaying messages. Still moreparticularly, the present invention provides an improved method,apparatus, and computer instructions for enhancements in instantmessaging systems.

2. Description of Related Art

Instant messaging is an online chat medium, allowing users tocommunicate with each other and collaborate in real-time over a networkdata processing system. Instant messaging is commonly used over theInternet. Instant messaging applications monitor and report the statusof users that have established each other as online contacts. Thisinformation is typically presented to a user in a window. Instantmessaging applications also are often used by users conducting business.By utilizing instant messaging, business users can view each other'savailability and initiate a text conversation with colleagues orcustomers when a desired contact becomes available. Millions of userscommunicate using instant messaging systems every day. With instantmessaging becoming an important part of a both personal and businesscommunications, functionality and usability enhancements are importantto the continued success of this type of communication tool.

Legacy instant messaging applications, however, include flaws whichshould be corrected for these applications to continue to be popular asa communications mechanism. One flaw recognized by the present inventionis that a limited facility is present in existing instant messagingapplications for managing and processing stored chat files. Virtuallyall legacy chat systems only have a default folder in which all of therecorded chat sessions are dropped into this folder. A user wishing togo back and view a particular chat session is required to go back andbrowse through many unrelated recorded chat sessions stored in thisfolder. These chat sessions are stored in files, which may be viewedbased on date and time within the common folder. Having to browsethrough all of these files makes the present mechanism for storing chatsessions inefficient and unorganized. To locate a particular chatsession, a user with the presently available legacy instant messagingsystems is required to know where the default chat session folder islocated. After identifying the location, the user must use a fileviewing program to locate the folder and search for the desired chatsession. These steps are inefficient and cumbersome for identifying astored session file.

Further, as the number of chat sessions stored in message files becomemore voluminous, identifying and locating a particular chat session orthread becomes cumbersome with all of these files being located in asingle default folder. In some cases, this folder may contain hundredsof threads or chat sessions. A chat session, as used herein, includesall conversation that occurs after an initiation of a conversationbetween two individuals or among a group of individuals. A thread is asubset of the chat session in which a user has deemed it necessary tosplit this portion of the chat session apart from the rest of thesession.

Another shortfall recognized by the present invention is an inability ofa user to determine which replies belong to which questions or commentswhen multiple communications threads are occurring. Currently, multipleconversation threads must be viewed and managed through a single windowpane in legacy instant messaging systems. For example, a user may beutilizing an instant messaging session to talk to the user's managerabout a particular contract and when the user remembers he needs to aska completely unrelated question, the user is forced to insert thisunrelated question into the current conversation thread in the window orwait until the current thread has completed. If, by waiting for thecurrent thread to complete, the user may not remember the current topic.

Therefore, it would be advantageous to have an improved method,apparatus, and computer instructions for managing communications ininstant messaging systems.

SUMMARY OF THE INVENTION

The present invention provides a method, apparatus, and computerinstructions for organizing threads in an instant messaging session.Instant messages are received from a list of contacts. Each of thesemessages are stored in a set of folders, wherein each folders in the setof folders stores messages for a contact in the number of contacts. Eachfile is linked for access though a graphical user interface. Messagethreads are handled by displaying a primary dialog window, wherein theprimary dialog window includes an ongoing conversation pane and anoutgoing message pane. Responsive to a user input identifying a newthread, a secondary dialog window is displayed, wherein the secondarydialog window includes an ongoing conversation pane and an outgoingmessage pane. Responses to outgoing messages sent from the outgoingmessage pane are displayed in the primary dialog window in the ongoingconversation pane in the primary dialog window. Responses to outgoingmessages sent from the outgoing message pane in the secondary dialogwindow are displayed in the ongoing conversation pane in the secondarydialog window, wherein the primary dialog window and the secondarydialog window.

BRIEF DESCRIPTION OF THE DRAWINGS

The novel features believed characteristic of the invention are setforth in the appended claims. The invention itself, however, as well asa preferred mode of use, further objectives and advantages thereof, willbest be understood by reference to the following detailed description ofan illustrative embodiment when read in conjunction with theaccompanying drawings, wherein:

FIG. 1 is a pictorial representation of a data processing system inwhich the present invention may be implemented in accordance with apreferred embodiment of the present invention;

FIG. 2 is a block diagram of a data processing system in which thepresent invention may be implemented;

FIG. 3 is a diagram illustrating components used in an improved instantmessaging system in accordance with a preferred embodiment of thepresent invention;

FIG. 4 is a diagram illustrating a hierarchical storage system forstoring chat sessions or threads in accordance with a preferredembodiment of the present invention;

FIG. 5 is a diagram illustrating a message storage system currently usedin instant messaging applications is depicted;

FIG. 6 is a diagram of windows for providing enhanced instant messagingthread control in accordance with a preferred embodiment of the presentinvention;

FIG. 7 is a diagram illustrating a legacy instant messaging windowwithout thread control;

FIG. 8 is a flowchart of a process for creating folders and links tocontacts on a contact list in accordance with a preferred embodiment ofthe present invention;

FIG. 9 is a flowchart of a process for saving messages from a chatsession in accordance with a preferred embodiment of the presentinvention;

FIG. 10 is a flowchart of a process for retrieving messages inaccordance with a preferred embodiment of the present invention; and

FIG. 11 is a flowchart of a process for handling multiple threads in achat session in accordance with a preferred embodiment of the presentinvention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

With reference now to the figures and in particular with reference toFIG. 1, a pictorial representation of a data processing system in whichthe present invention may be implemented is depicted in accordance witha preferred embodiment of the present invention. A computer 100 isdepicted which includes system unit 102, video display terminal 104,keyboard 106, storage devices 108, which may include floppy drives andother types of permanent and removable storage media, and mouse 110.Additional input devices may be included with personal computer 100,such as, for example, a joystick, touchpad, touch screen, trackball,microphone, and the like. Computer 100 can be implemented using anysuitable computer, such as an IBM eServer computer or IntelliStationcomputer, which are products of International Business MachinesCorporation, located in Armonk, N.Y. Although the depictedrepresentation shows a computer, other embodiments of the presentinvention may be implemented in other types of data processing systems,such as a network computer. Computer 100 also preferably includes agraphical user interface (GUI) that may be implemented by means ofsystems software residing in computer readable media in operation withincomputer 100.

With reference now to FIG. 2, a block diagram of a data processingsystem is shown in which the present invention may be implemented. Dataprocessing system 200 is an example of a computer, such as computer 100in FIG. 1, in which code or instructions implementing the processes ofthe present invention may be located. Data processing system 200 employsa peripheral component interconnect (PCI) local bus architecture.Although the depicted example employs a PCI bus, other bus architecturessuch as Accelerated Graphics Port (AGP) and Industry StandardArchitecture (ISA) may be used. Processor 202 and main memory 204 areconnected to PCI local bus 206 through PCI bridge 208. PCI bridge 208also may include an integrated memory controller and cache memory forprocessor 202. Additional connections to PCI local bus 206 may be madethrough direct component interconnection or through add-in boards. Inthe depicted example, local area network (LAN) adapter 210, smallcomputer system interface SCSI host bus adapter 212, and expansion businterface 214 are connected to PCI local bus 206 by direct componentconnection. In contrast, audio adapter 216, graphics adapter 218, andaudio/video adapter 219 are connected to PCI local bus 206 by add-inboards inserted into expansion slots. Expansion bus interface 214provides a connection for a keyboard and mouse adapter 220, modem 222,and additional memory 224. SCSI host bus adapter 212 provides aconnection for hard disk drive 226, tape drive 228, and CD-ROM drive230. Typical PCI local bus implementations will support three or fourPCI expansion slots or add-in connectors.

An operating system runs on processor 202 and is used to coordinate andprovide control of various components within data processing system 200in FIG. 2. The operating system may be a commercially availableoperating system such as Windows XP, which is available from MicrosoftCorporation. An object oriented programming system such as Java may runin conjunction with the operating system and provides calls to theoperating system from Java programs or applications executing on dataprocessing system 200. “Java” is a trademark of Sun Microsystems, Inc.Instructions for the operating system, the object-oriented programmingsystem, and applications or programs are located on storage devices,such as hard disk drive 226, and may be loaded into main memory 204 forexecution by processor 202.

Those of ordinary skill in the art will appreciate that the hardware inFIG. 2 may vary depending on the implementation. Other internal hardwareor peripheral devices, such as flash read-only memory (ROM), equivalentnonvolatile memory, or optical disk drives and the like, may be used inaddition to or in place of the hardware depicted in FIG. 2. Also, theprocesses of the present invention may be applied to a multiprocessordata processing system.

For example, data processing system 200, if optionally configured as anetwork computer, may not include SCSI host bus adapter 212, hard diskdrive 226, tape drive 228, and CD-ROM 230. In that case, the computer,to be properly called a client computer, includes some type of networkcommunication interface, such as LAN adapter 210, modem 222, or thelike. As another example, data processing system 200 may be astand-alone system configured to be bootable without relying on sometype of network communication interface, whether or not data processingsystem 200 comprises some type of network communication interface. As afurther example, data processing system 200 may be a personal digitalassistant (PDA), which is configured with ROM and/or flash ROM toprovide non-volatile memory for storing operating system files and/oruser-generated data.

The depicted example in FIG. 2 and above-described examples are notmeant to imply architectural limitations. For example, data processingsystem 200 also may be a notebook computer or hand held computer inaddition to taking the form of a PDA. Data processing system 200 alsomay be a kiosk or a Web appliance. The processes of the presentinvention are performed by processor 202 using computer implementedinstructions, which may be located in a memory such as, for example,main memory 204, memory 224, or in one or more peripheral devices226-230.

The present invention provides an improved method, apparatus, andcomputer instructions for processing messages in an instant messagingsystem. This mechanism overcomes problems with the storing of recordedchat sessions and with interrupting the flow of threads. The mechanismof the present invention provides an improved system for storing andmanaging chat session thread files. The voluminous amounts of messagethreads that may be stored are addressed in a manner that reduces orminimizes any cumbersomeness in locating a stored message file. Themechanism of the present invention provides a system in which chat filesfor a particular user are saved in association with that user. The filesmay be stored in folders associated with each of the users, or each filemay be tagged in some manner to associate those files with that user.Additionally, the instant messaging application is enhanced to use alink or some other graphic control to allow the user to save a chatsession to use a specific user, as well as using graphical controls toaccess previously saved chat sessions. These links or graphical controlsare associated with users on the user list.

With respect to managing threads in windows, the mechanism of thepresent invention provides a system in which a new instant messagingwindow will be initiated each time a new thread occurs. In this manner,each thread has a separate window, thus reducing confusion betweendifferent threads.

Turning next to FIG. 3, a diagram illustrating components used in animproved instant messaging system is depicted in accordance with apreferred embodiment of the present invention. These components may beimplemented in a data processing system, such as data processing system200 in FIG. 2.

In the depicted example, instant messaging application 300 processesmessages, such as message 302 received from users located on remote dataprocessing systems. AS messages are received, these messages arepresented in dialog windows 304. Additionally, dialog windows 304provide an interface for user input to send messages to other users.Contact and control window 306 is presented by instant messagingapplication 300 to provide the user with a list of user names, as wellas other information, such as, for example, identifying other users thatare currently online. Contact and control window 306 also provides aninterface to allow the user to set different preferences. For example,the user may set passwords required to access different names used ininstant messaging sessions. Further, a user may employ contact andcontrol window 306 to set other preferences, such as colors and fontsused in instant messaging application 300.

Further, the list of names presented by contact and control window 306are stored in contact list 308 in these examples. Additional user namesmay be added or deleted from contact list 308. This contact list isemployed in presenting the list of names within contact and controlwindow 306.

A user may select a graphical control or select a link associated with auser name presented in the list of user names in contact and controlwindow 306 to store the session for that user name in message storage310. In the depicted examples, instant messaging application 300 storeschat sessions for different users in different folders within messagestorage 310. Alternatively, the different files for storing chatsessions for different users may be tagged with identifiers indicatingthe particular user name that is associated with the chat session. Theseindicators could be placed within the file or within the file namedepending on the particular application.

By selecting a user name from contact and control window 306 or acontrol or link associated with that user name, a user may cause instantmessaging application 300 to store that session in a file in associationwith that user name. By using the same link or graphical control or adifferent one associated with that user name, the user may retrieveprior chat sessions stored for that particular user name.

Additionally, instant messaging application 300 provides a mechanism forhandling multiple threads between two users in dialog windows 304. Thismechanism provides a graphical control within a presently used windowpane between two users. This control may be selected to initiate thepresentation of a second window to allow for a second discussion orthread discussed between those two users. In this manner, ambiguity asto which question, answer, and/or comment is part of which discussionthread is eliminated.

Turning next to FIG. 4, a diagram illustrating a hierarchical storagesystem for storing chat sessions or threads is depicted in accordancewith a preferred embodiment of the present invention. In this example,folder 400 is a top level folder under which different folders fordifferent users are located. In this example, these folders include thedefault folder 402, john_doe@jdoe.net folder 402, and s.king@writer.netfolder 406. In each of these folders, chat sessions or threads arestored for particular users.

In this example, default folder 402 is a folder in which messages forusers with no entries in a buddy list, such as buddy list 408 are found.Buddy list 408 is an example of contacts from a contact list, such ascontact list 308 in FIG. 3 presented in contact control window 306 inFIG. 3. In this example, entry 410 in buddy list 408 corresponds tojohn_doe@jdoe.net folder 402, while entry 412 in buddy list 408corresponds to s.king@writer.net folder 406.

When messages are saved for a particular entry on buddy list 408, thesemessages are stored in one of default folder 402, john_doe@jdoe.netfolder 402, or s.king@writer.net folder 406. In these examples, files414 and 416 are stored in default folder 402. These files are for chatsessions for user not found on buddy list 408. Files 418, 420, 422, and424 are stored in john_doe@jdoe.net folder 402 for chat sessions storedin association with entry 410 in buddy list 408. Chat sessions for entry412 are stored in s.king@writer.net folder 406. In this example, thesechat sessions are stored in 426, 428, and 430. In these examples, eachof the files is named using the name on the buddy list, as well asincluding a date on which the chat session was stored.

Previously stored chat session or threads may be accessed in theseexamples by selecting a hyperlink associated with the name for entry 410or 412 as presented in buddy list 408. In these examples, the user inputis a right click on the name presented in buddy list 408. When such aninput occurs, the different files stored in the folder are presented tothe user such that the user may select one of the files for viewing. Inthis manner, the cumbersome and inefficient mechanism provided incurrent IM applications is avoided through the association of chatsessions with user names on a contact list. This mechanism simplifiesthe process of storing and retrieving chat sessions.

With reference now to FIG. 5, a diagram illustrating a message storagesystem currently used in instant messaging applications is depicted. Inthis example, folder 500 is a top level folder under which all filescontaining chat sessions are stored. In this example, chat folder 502contains files for each and every recorded message for all users. As canbe seen, this organization of files is more cumbersome and inefficientfor a user to access. The inefficiency and cumbersomeness increases asthe number of files increases in chat folder 502. Some users may havehundreds of saved chat sessions.

Further, the inefficiency in the presently available instant messagingapplications is further increased due to the fact that the user mustmanually locate chat folder 502. For example, in an operating system,such as Windows XP, a user must double click an icon labeled “mycomputer”. Windows XP is a trademark of Microsoft Corporation.Thereafter, the user would select “C:\drive” then double click an iconlabeled “program files”. Thereafter, the user would double click afolder called “instant messaging” and then double click a folder labeled“chat folder”. At this point, the user must search through all of theentries to identify the desired session file, and then identify thatsession file. This process requires a number of user inputs and assumesthat the user knows the location of the files. No link or graphicalcontrol is presently available in the buddy list or elsewhere in theinstant messaging application to allow the quick access as illustratedwith respect to the hierarchical storage system for storing messagesillustrated in FIG. 4 above.

Turning next to FIG. 6, a diagram of windows for providing enhancedinstant messaging thread control is depicted in accordance with apreferred embodiment of the present invention. In this example, dialogbox 600 is a primary dialog box displaying all communication for a chatsession. In this example, the discussion thread is located in ongoingconversation pane 602. This section shows communications from bothparties. Outgoing message pane 604 contains input from the user that issent to the other user at the remote data processing system. Outgoingmessage pane 604 is used to hold a current reply, but is emptied as soonas that reply is sent to the recipient. According to the presentinvention, new thread button 606 is included to allow for the managementof more than one thread within a chat session.

In response to selecting new thread button 606, window 608 is presentedto the user. In this second window, a second discussion thread ispresented in ongoing message pane 610 of window 608. The user input isentered into outgoing message pane 612. Outgoing message pane 612 isused to hold a current reply, but is emptied as soon as that reply issent to the recipient. This secondary window, window 608 may be closedusing closed window button 614. Additionally, other users may be invitedto the chat session by selecting the invite others button 616. Thisbutton provides a feature allowing either party in a chat session threadto invite others on the user's buddy list to join a thread. In thisinstance, the mechanism of the present invention will store theconversation in both locations.

As can be seen, the window mechanism of the present inventionillustrated in FIG. 6 provides an ability to separate different threadswithin a chat session into different windows. In these examples, whennew thread button 606 is selected, this results in a message being sentto the other instant messaging program on the remote data processingsystem to open a new window for the second thread. Of course, otherwindows may be opened for other threads, even though only two windowsare illustrated in FIG. 6.

Next, FIG. 7 is a diagram illustrating a legacy instant messaging windowwithout thread control. In this example, window 700 includes multiplethreads in ongoing message pane 702. Outgoing message pane 703 is usedto hold a current reply and is emptied as soon as that reply is sent tothe recipient. These different threads correspond to the different onesorganized in windows 600 and 608 in FIG. 6. In this example, line 704relates to the first discussion thread, and line 706 relates to a seconddiscussion thread. In this example, it is unclear as to whether line 708or if line 710 belong to the first or second discussion thread. Line 706is displayed in a second window, window 608 in FIG. 6, as well as otherlines that relate to the same thread. Thus, in comparing window 700 inFIG. 7 to windows 600 and 608 in FIG. 6, the mechanism of the presentinvention allows for organization of different threads and the abilityto S avoid ambiguity as to which question, answer, and/or comment ispart of which discussions thread.

Turning next to FIG. 8, a flowchart of a process for creating foldersand links to contacts on a contact list in accordance with a preferredembodiment of the present invention. The process listed in FIG. 8 may beimplemented in an application, such as instant messaging application 300in FIG. 3.

The process begins by identifying contacts on the contact list (step800). This contact list may be, for example, contact list 308 in FIG. 3.A contact is selected from the contact list for processing (step 802). Adetermination is made as to whether a folder is present for the contact.If a folder is not present, a folder is created (step 806). This foldermay be a folder such as john_doe@jdoe.net folder 402 in FIG. 4. Afterthe folder is created, this folder is linked to the contacts (step 808).This link allows for the folder to be accessed if a link or graphicalcontrol associated with the contact presented to the user is selected.Thereafter, a determination is made as to whether additional unprocessedcontacts are present in the contact list (step 810).

If additional unprocessed contacts are present, the process returns tostep 802. Otherwise, the process terminates. With reference again tostep 804, if a folder is present for the selected contact, the processproceeds to step 810 as described above.

Turning next to FIG. 9, a flowchart of a process for saving messagesfrom a chat session is depicted in accordance with a preferredembodiment of the present invention. The process listed in FIG. 9 may beimplemented in an application, such as instant messaging application 300in FIG. 3.

The process begins by receiving a request to store messages (step 900).This request is initiated by a user selecting an option or some othercontrol to store messages from a chat session. A determination is madeas to whether the contact for which these messages are stored is on thecontact list (step 902). If the contact is on the list, the messages arestored in a folder linked with the contacts (step 904), with the processterminating thereafter. Otherwise, the message is saved in a defaultlocation (step 906), with the processing terminating thereafter,

Depending on the particular implementation, instead of saving themessage on a specific location, the user may be asked to add the name tothe contact list. If such a procedure is used, then a new folder iscreated and linked to the new contact.

With reference now to FIG. 10, a flowchart of a process for retrievingmessages is depicted in accordance with a preferred embodiment of thepresent invention. The process listed in FIG. 10 may be implemented inan application, such as instant messaging application 300 in FIG. 3. Theprocess begins by detecting a user input (step 1000). Upon detecting theuser input, a determination is made as to whether the user input is tofind saved sessions for a selected name on a contact list (step 1002).This type of user input occurs when a user selects a link or graphicalcontrol associated with a name on a contact list. If the user input isto find saved sessions for a selected name on a contact list, thesefiles are identified and displayed to the user (step 1004), with theprocess then returning to step 1000 to determine another user input.

With reference again to step 1002, if the user input is not to find asaved session for a selected name on a contact list, a determination ismade as to whether the user input is to retrieve messages for aparticular displayed file (step 1006). If the user input is to retrievemessages for a particular displayed file, those messages are thendisplayed (step 1008), with the process then returning to step 1000 asdescribed above. If the user input is not to retrieve messages, thisinput is then processed depending on the identification of this input(step 1010), with the process then returning to step 1000 as describedabove. Step 1010 is provided for other user input to initiate otherprocesses currently available in an instant messaging application.

With reference now to FIG. 11, a flowchart of a process for handlingmultiple threads in a chat session is depicted in accordance with apreferred embodiment of the present invention. The process listed inFIG. 11 may be implemented in an application, such as instant messagingapplication 300 in FIG. 3. In particular, this process illustrated inFIG. 11 is a window process initiated for each thread in a sessionbetween two users.

The process begins when a message is received by the user or the userinitiates sending a message (step 1100). A dialog window is presented(step 1102). This dialog window is a window, such as dialog window 600in FIG. 6. An event is then received (step 1104). A determination isthen made as to whether the event is an incoming message (step 1106). Ifthe event is an incoming message, this message is displayed in anongoing conversation pane (step 1108), with the processing returning tostep 1104 as described above. This pane is a pane, such as ongoingconversation pane 602 in FIG. 6.

With reference again to step 1106, if the message is not an incomingmessage, a determination is made as to whether the event is a user inputsending a message from the outgoing message pane (step 1110). If themessage is one sent by the user, this text is displayed as described instep 1108. Otherwise, the user input is the selection of a new threadbutton, such as new thread button 606 in FIG. 6. In this instance, a newdialog window process is initiated (step 1112), with the process thenreturning to step 1104, as described above. This new window process is anew process such as one described here in FIG. 11. This process willcontrol the sending and receiving of messages in another window, such aswindow 608 in FIG. 6.

Thus, the present invention provides an improved method, apparatus, andcomputer instructions for enhancing instant messaging systems. Themechanism of the present invention provides this enhanced system througha hierarchical storage system in which files are linked to names in acontact list, along with a windowing system for handling multiplethreads in a session between two users. With the storage system,messages for a particular name on the contact list are stored in afolder associated with that name. In this manner, each name in thecontact list has a separate folder. The folder is linked to the namessuch that a graphical control or link may be selected to access thesefolders without requiring the user to traverse different folders in atree and without having to know the location in which these files arestored. Further, the windowing system of the present invention allowsfor different threads between two users to be presented in differentwindows to allow for the threads to be kept separate and to avoidconfusion as to what text or messages are associated with what thread.

It is important to note that while the present invention has beendescribed in the context of a fully functioning data processing system,those of ordinary skill in the art will appreciate that the processes ofthe present invention are capable of being distributed in the form of acomputer readable medium of instructions and a variety of forms and thatthe present invention applies equally regardless of the particular typeof signal bearing media actually used to carry out the distribution.Examples of computer readable media include recordable-type media, suchas a floppy disk, a hard disk drive, a RAM, CD-ROMs, DVD-ROMs, andtransmission-type media, such as digital and analog communicationslinks, wired or wireless communications links using transmission forms,such as, for example, radio frequency and light wave transmissions. Thecomputer readable media may take the form of coded formats that aredecoded for actual use in a particular data processing system.

The description of the present invention has been presented for purposesof illustration and description, and is not intended to be exhaustive orlimited to the invention in the form disclosed. Many modifications andvariations will be apparent to those of ordinary skill in the art. Theembodiment was chosen and described in order to best explain theprinciples of the invention, the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

1. A method in a data processing system for managing messages, themethod comprising: receiving a request to store a plurality of instantmessages from a particular chat session with a particular contact;determining whether the particular contact has a listing on a contactlist comprising a plurality of contacts, wherein each contact of theplurality of contacts having a listing on the contact list has anassociated folder in a set of folders for storing chat sessions of theassociated contact, and wherein each folder in the set of folders islinked with the listing of its associated contact on the contact listthrough a graphical user interface; and responsive to determining thatthe particular contact has a listing on the contact list, selecting thelisting of the particular contact from the contact list to store theplurality of instant messages from the particular chat session in theassociated folder linked with the listing of the particular contact onthe contact list.
 2. The method of claim 1 further comprising:displaying the contact list; responsive to a user input, selecting theparticular contact on the contact list; and displaying instant messagesstored in the folder associated with the particular contact.
 3. Themethod of claim 2, wherein selecting the particular contact on thecontact list comprises moving a pointer over the listing of theparticular contact on the contact list and selecting the particularcontact with a right click.
 4. The method of claim 2, wherein selectingthe particular contact on the contact list comprises selecting theparticular contact on the contact list using an alt key on a keyboard.5. The method of claim 2, wherein selecting the particular contact onthe contact list comprises selecting the particular contact on thecontact list using a shift key on a keyboard.
 6. The method of claim 2,wherein the instant messages are displaying in reverse chronologicalorder.
 7. The method of claim 2 further comprising: adding a new folderto the set of folders when a listing of a new contact is added to thecontact list.
 8. The method of claim 1, wherein instant messages in afolder, within the set of folders, are stored in files.